package com.link.base.base.position.service;

import com.link.base.base.position.model.Position;
import com.link.base.ext.emp.model.ExtEmployee;
import com.link.core.basic.service.BasicService;

import java.util.List;

/**
 * @author unknown
 * @date unknown
 * @comments 职位服务
 */
public interface PositionService extends BasicService<Position> {

    /**
     * 查询根职位
     * @param entity 职位
     * @return 职位
     * @throws Exception
     */
    public Position queryRoot(Position entity) throws Exception;

    /**
     * 查询职位列表表排除主键为Id的职位和其子职位
     * @param entity 职位
     * @return 职位列表
     * @throws Exception
     */
    public List<Position> queryPositionListRemoveIdAndChildrenPage(Position entity) throws Exception;

    /**
     * 通过用户ID查询用户的职位
     * @param entity 职位
     * @return 职位列表
     * @throws Exception
     */
    public List<Position> queryByUserPage(Position entity) throws Exception;

    /**
     * 根据根职位查询职位树
     * @param entity 职位
     * @throws Exception
     */
    public void queryTreeByRoot(Position entity) throws Exception;

    /**
     * 用于画结构图
     * @param entity 职位
     * @throws Exception
     */
    public void queryTreeByRoot1(Position entity) throws Exception;

    /**
     * 根据ID递归删除该记录以及其子对象
     * @param entity 职位
     * @throws Exception
     */
    public void deleteWithChildById(Position entity) throws Exception;

    /**
     * 修改主要负责人
     *
     * @param postnId 职位ID
     * @param userId  用户ID
     * @throws Exception
     */
    public void mainUserUpdate(Long postnId, Long userId) throws Exception;

    /**
     * 通过集成ID查询职位
     * @author huanglongjian
     * @date 2017年11月30日
     * @param entity 职位
     * @return 职位
     * @throws Exception
     */
    public Position queryByIntegrationId(Position entity) throws Exception;

    /**
     * 查询客户的职位
     * @author huanglongjian
     * @param postion
     * @return 职位列表
     * @throws Exception
     */
    public List<Position> queryByAccntId(Position postion) throws Exception;

    /**
     * 查询唯一的职位(职位编码)
     * @author 刘启鑫
     * @date 2020/8/21 17:52
     */
    Position queryUniquePosition(Position position);


    /**
     * 根据SHR父组织ID查询组织
     * @author 刘启鑫
     * @date 2020/8/21 17:52
     */
    Position queryUniqueShrParOrgnization(Position position);

    /**
     * 更新ESB接口数据
     * @author 刘启鑫
     * @date 2020/8/21 17:53
     */
    void updateForEsb(Position position);

    /**
     * 根据Shr职位ID查询职位信息
     *
     * @author 刘启鑫
     * @date 2020/8/22 17:54
     */
    Position queryEmpPositionByEmp(ExtEmployee employee);

    /**
     * 根据职位编码查询职位
     *
     * @author 刘启鑫
     * @date 2020/9/3 16:05
     */
    Position queryPositionByPostnCode(String postnCode);


    /**
     * 查询商务中心职位
     * @author 王昊
     * @date 2020/9/25 16:05
     */
    List<Position> queryUserPostnById(Position t);
}
